Conventionally, a motor vehicle comprises numerous pieces of equipment (thermal or electric engine, gearbox, etc.) which may develop faults during the life of the vehicle. Consequently there is a known way of monitoring said vehicle during its operation or while it is stationary, for the purpose of detecting faults and storing them in a dynamic memory of the vehicle. Because of the storage of the faults in the dynamic memory, a mechanic can easily and reliably determine the cause of the faults for the purpose of repairing said vehicle.
Conventionally, a motor vehicle comprises a monitoring computer which comprises said dynamic memory and which performs various diagnostic functions, each diagnostic function being configured to detect a predetermined fault (injector short circuit, or the like). In practice, the monitoring computer executes numerous different diagnostic functions in order to determine numerous predetermined faults. In a known way, the monitoring computer is the computer which executes the engine control operations.
If the execution of a diagnostic function indicates the presence of a fault, a fault message is stored in the dynamic memory of the monitoring computer. In a known way, each fault message has a priority ranking, making it possible to determine whether the fault message is important (high ranking) or unimportant (low ranking).
Owing to technical constraints, the dynamic memory has a limited number of memory spaces for storing fault messages. For example, the dynamic memory may have 10 memory spaces to enable 10 fault messages to be stored. Clearly, there could be a different number of spaces.
In practice, when the dynamic memory is full, only the most important fault messages are added to the dynamic memory, in place of the less important messages. Thus, advantageously, when a mechanic consults the dynamic memory he is certain to see the most important fault messages, which must be dealt with urgently.
Conventionally, the monitoring computer has a single processing processor, the monitoring computer being called a “single-core computer”. With a single processing processor, the various diagnostic functions are executed in a synchronous manner, one after another, without any risk of interruption. Thus the fault messages are stored sequentially in the dynamic memory. By way of example, with reference to FIG. 1, the single processor P1 executes the diagnostic functions DIAG A-DIAG D successively. Since the diagnostic functions DIAG B-DIAG D indicate that a fault is present, fault messages m B, m C, m D are stored in a synchronous manner in the dynamic memory DYN.
To improve the monitoring of a motor vehicle, it has been proposed that a greater number of diagnostic functions be executed in order to detect a greater number of different faults. This is because, as the complexity of vehicles increases, the number of potential faults also increases. Furthermore, specific faults must be monitored to comply with pollution prevention regulations or other statutory regulations.
To enable the monitoring computer to execute a large number of diagnostic functions, it has been proposed that a plurality of processors be used simultaneously, in which case the monitoring computer is called a “multi-core computer”. This is because a single-core monitoring computer cannot execute a large number of diagnostic functions, in particular, because of the factors of computing power and heat dissipation.
When a plurality of processors are used simultaneously to execute diagnostic functions, fault messages can be generated simultaneously by the monitoring computer, which may result in write conflicts. By way of example, with reference to FIG. 2, two processors P1, P2 simultaneously execute diagnostic functions DIAG A-DIAG H. In this example, the fault messages m D, m G are generated simultaneously by the processors P1, P2, resulting in a write conflict in the dynamic memory DYN.
Since it is impossible to write simultaneously to the dynamic memory, because it is not shared, it has been proposed that a shared queue memory be used, the fault messages being stored temporarily in this memory before being stored sequentially in the dynamic memory by a single specified processor.
The temporary memory, also called a “queue”, is a memory of the FIFO type, this term corresponding to the English designation “First In First Out”. This queue memory is used in numerous other applications of the monitoring computer and cannot be modified.
During the monitoring of the vehicle, the various fault messages sent by the various processors of the monitoring computer are collected according to their order of arrival in the temporary memory. Subsequently, at regular time intervals, one of the processors of the monitoring computer empties the temporary memory in order to fill the dynamic memory, in a sequential manner. In a similar way to what takes place in a “single-core” monitoring computer, the most important fault messages in the queue memory are stored in the dynamic memory with priority over the less important fault messages. By way of example, with reference to FIG. 3, two processors P1, P2 simultaneously execute diagnostic functions DIAG A-DIAG H. In this example, the fault messages m D, m G are generated simultaneously by the processors P1, P2, and are stored in the temporary memory TMP which is shared. One of the processors P1, P2 then sequentially writes the data in the temporary memory TMP into the dynamic memory DYN.
A problem arises regarding the definition of the size of the temporary memory of the monitoring computer, given that dynamic memory allocation is not permitted for this critical type of application. If the size of the temporary memory is too small, it is possible that some fault messages may not be collected by the temporary memory, and will therefore have no chance of being stored in the dynamic memory. This drawback is particularly critical if the fault message uncollected by the temporary memory is an important fault message having a high priority ranking.
Consequently it has been proposed that a temporary memory size corresponding to the total number of possible fault messages (about 300 memory spaces) be used in order to avoid any loss of an important fault message. In practice, this temporary memory size is too great, as it results in drawbacks in industrial terms, particularly as regards cost.